Index: src/mgr/stringmgr.cpp
===================================================================
--- src/mgr/stringmgr.cpp	(revision 3718)
+++ src/mgr/stringmgr.cpp	(revision 3721)
@@ -20,6 +20,7 @@
  *
  */
 
+#include <ctype.h>
 #include <stringmgr.h>
 #include <swlog.h>
 #include <localemgr.h>
Index: src/modules/filters/osisxhtml.cpp
===================================================================
--- src/modules/filters/osisxhtml.cpp	(revision 3718)
+++ src/modules/filters/osisxhtml.cpp	(revision 3721)
@@ -849,7 +849,11 @@
 			     else if (tag.isEndTag()) {
 			     	outText("</div>", buf, u);
 			}
-			else if (!(type == "colophon")) outText(tag, buf, u);
+			else if (!(type == "colophon")) {
+				if (tag.getAttribute("sID")) tag.setEmpty(false);
+				if (tag.getAttribute("eID")) tag.setEndTag(true);
+				outText(tag, buf, u);
+			}
 			
 		}
 		else if (!strcmp(tag.getName(), "span")) {
Index: src/utilfuns/utilxml.cpp
===================================================================
--- src/utilfuns/utilxml.cpp	(revision 3718)
+++ src/utilfuns/utilxml.cpp	(revision 3721)
@@ -291,13 +291,16 @@
 		tag.append('/');
 
 	tag.append(getName());
-	for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) {
-		//tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str());
-		tag.append(' ');
-		tag.append(it->first.c_str());
-		tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\"");
-		tag.append(it->second.c_str());
-		tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"');
+
+	if (!isEndTag()) {
+		for (StringPairMap::iterator it = attributes.begin(); it != attributes.end(); it++) {
+			//tag.appendFormatted(" %s=\"%s\"", it->first.c_str(), it->second.c_str());
+			tag.append(' ');
+			tag.append(it->first.c_str());
+			tag.append((strchr(it->second.c_str(), '\"')) ? "=\'" : "=\"");
+			tag.append(it->second.c_str());
+			tag.append((strchr(it->second.c_str(), '\"'))? '\'' : '\"');
+		}
 	}
 
 	if (isEmpty())
Index: include/utilxml.h
===================================================================
--- include/utilxml.h	(revision 3718)
+++ include/utilxml.h	(revision 3721)
@@ -75,6 +75,13 @@
 	 * otherwise, we return if we're a simple XML end </tag>.
 	 */
 	bool isEndTag(const char *eID = 0) const;
+	inline void setEndTag(bool value) {
+		if (!parsed)
+			parse();
+		endTag = value;
+		if (value)
+			empty = false;
+	}
 
 	const StringList getAttributeNames() const;
 	int getAttributePartCount(const char *attribName, char partSplit = '|') const;
